Traditionally, computer software is manufactured and distributed through a system where a developer creates software (by designing a solution to a problem and coding that solution), manufactures the software in mass at a production facility, packages the software and then distributes it to the consumer. The software, in the form of computer code, is stored on a secondary storage device, such as a disk. Software products are generally manufactured by copying the computer code to the required number of storage devices. In a normal distribution chain, the consumer, who may be a purchaser or licensee, generally acquires the software (i.e., a storage device containing a copy of the computer code) from wholesale or retail dealers who in turn have acquired the software from the manufacturer.
A problem with the traditional system for the manufacture and distribution of computer software is that each software developer has its own substantial production, packaging and transportation costs, plus fixed overhead costs for facilities and personnel. When added to the initial investment required to develop software, such costs often make the launching of a new product prohibitive for the developer, especially where the developer is an individual or small corporation. Production and distribution is costly, and these costs are passed on to the consumer by way of higher product prices or fees. Additionally, the developer, where demand for a product is uncertain, may not know how many copies of a piece of software to manufacture and distribute. Production of too many or too few copies results in lost profits.
One approach taken by a segment of the software industry in order to reduce the inherent costs associated with the traditional manufacture and distribution of software is to invite consumer participation through the concept of "shareware" software. Shareware is software available for copying by consumers free of charge or at nominal costs from electronic bulletin boards accessed using modems or through mail order catalogue services. If, after having had an opportunity to use the software for a short period of time, the user decides to keep the software, the user is then under a good faith obligation to register the software and return a fee to the developer or distributor. In practice, the consumer participation in copying and distributing the available software is good, but the honorarium is rarely paid. As a direct consequence of the poor returns to shareware developers in general, the quality of products and level of support is low.
Another and very significant problem facing the manufacturer of computer software is the unauthorized reproduction of software products. Computer software is expensive to design and code, but the duplication of an individual piece of software can be done swiftly and, relative to the initial production costs, at minimal cost. For example, by using operating system commands, a user can simply copy a program from a storage device such as a disk using one of the user's disk drives to another storage device. This illegal copying of software duplicates, on a small scale, a developer's manufacturing process. However, the unauthorized copying of computer software cannot be controlled by the manufacturer and the distribution of authorized copies cannot be traced.
The software manufacturing industry is placed in an unfortunate position. The purchase price of software is relatively high to reflect the cost of design and coding. The consumer is often averse to paying a high price for software, especially for software that cannot be evaluated before purchase (because the manufacturer will not allow access to the software before the purchase to prevent pre-purchase copying), and when the consumer is faced with a low risk of being detected and prosecuted for copying software, there is a strong incentive to make an unauthorized copy of the software. In effect, unlicensed, pirated software competes directly for the same market as legally manufactured software. The lost revenue to the manufacturer is passed on to the consumer via higher purchase prices, further increasing the incentive for piracy. With the current trend in the industry to develop software which has an intuitive, graphical interface, not requiring manuals to operate it, this problem can only increase as users do not require access to difficult to copy instruction manuals and tutorials. Further, pirated software can be quickly and widely distributed over telephone lines using modems.
One approach the industry has taken to improve the return on investment in the manufacture and distribution of software is to attempt to decrease the amount of software piracy. Software developers have used varying copy protection schemes. These schemes generally prevent a user from copying software or using an unauthorized copy of software. Schemes include "dongles", "code-wheels", storing the software on difficult to copy storage devices such as copy protected disks, using enabling access codes provided in user manuals or by the developer that must be entered before the software will work, or using hardware specific validation codes that allow a piece of software to operate only on one identified computer. Alternatively, a software developer could use a hardware copy protection scheme where an access code is supplied by a unique or difficult to copy hardware device able to be attached to only one computer at a time. Typically, when licensed software is not given an access code, the standard practice is for the software to refuse to operate. See, for example, U.S. Pat. No. 4,562,306 (Method and Apparatus for Protecting Computer Software Using an Active Coded Hardware Device) and 4,748,561 (Method of Protecting Computer Software).
Copy protection schemes have not been effective in stemming the tide of piracy, mainly because there are many specialized anti-copy products available to "unlock" the copy protection. Further, some copy protection schemes prevent consumers from legitimately making backup copies of the software for use when the authorized copy fails or is destroyed.
Another approach to prevent piracy of software is to require the authorized user, upon the first start-up of the software, to input the user's name (which is then stored in the software's code) such that the user's name will appear on the initialization screen on each successive re-use in order to identify the user to whom the software is licensed or sold. This practice is intended to discourage authorized software users from allowing their software to be reproduced, knowing that they can be identified readily from an unauthorized copy of the software. However, as the software producer is unlikely to know when the software is illegally copied and is unlikely to be able to track down unauthorized users, such a scheme does not discourage copying. Further, there is no identification of users who pirate pirated software.
An approach to reduce piracy prior to purchase but to allow a potential consumer to test a piece of software is to distribute demonstration software without the full functional features of the software program. This permits the user to sample the user interface and certain features of the software without having to purchase the software product "sight unseen". If the user likes the software, the user can contact the developer or distributor for the fully functional software upon registration and payment of a license fee or the purchase price. The problem with such demonstration software is that twice the number of software products have to be produced and distributed. One or more storage mediums containing software must be produced and distributed for demonstration and one or more storage mediums containing different software must be produced and distributed for full function operation. This increases the costs of production and distribution. Further, the user is inconvenienced by twice having to contact or visit the distributor and is delayed until the full function software is obtained.
One solution to the problem of having to obtain additional fully functional software is to initially provide to the user the full function program but to have only certain files active for demonstration purposes. Then, if the user wants to enable the full function, the user must contact the developer or distributor for registration and payment of the license fee or purchase price in return for an access code. However, once the access code is revealed, unauthorized copies can be made and the access code can be passed on with the unauthorized copy of the software. Therefore, this is not effective protection. Typically the process also requires the overhead of serializing each individual software copy at a central point of manufacture.
As a result of the high overhead costs of the traditional means of manufacture and distribution of software, and the significant level of unauthorized reproduction of software, there is a need in the software industry for a system that takes advantage of the software consumers' ability to manufacture and distribute copies of software using their own equipment while at the same time controlling access to the software so that the person who designed and coded the software receives fees for its use. In other words, there is a need in the industry for a method of manufacture and distribution that invites rather than restricts consumer participation in the manufacture and distribution process but does not reduce the incentive of the original manufacturer to create the software.
Software is not the only product that suffers from these problems. Other developers and distributors in the information industry, such as developers and distributors of databases and other informational products, also have difficulties controlling access to their product where it can be loaded onto a user's own machine. They have a product that individual users find easy to copy and distribute, but which is costly for the developer to initially design, make and efficiently distribute. Developers and distributors of information products desire to harness the user's ability to copy and distribute their product but only where they can obtain a fee for their initial involvement.
As a result, there is a significant and substantial need in the information industry to allow developers to sell their information product to the full potential market efficiently, that encourages and takes advantage of consumer participation in the manufacture and distribution of the information products yet has centralized monitoring and control, that permits consumers to evaluate the product prior to the purchase decision, that effectively combats piracy, and that permits developer profit for funding of support and update services.